#include "mixp_module.h"
#include <dlfcn.h>

extern const mixp_module_ops_t mixp_module_op_audio_decoder;
extern const mixp_module_ops_t mixp_module_op_vad;
extern const mixp_module_ops_t mixp_module_op_post;

static const mixp_module_ops_t *mixp_module_ops[] = {
    &mixp_module_op_audio_decoder,
    &mixp_module_op_vad,
    &mixp_module_op_post,
    NULL};

const mixp_module_ops_t *module_ops_by_type(mixp_module_type_t mtype)
{
    return mixp_module_ops[mtype];
}

void mixp_module_free(mixp_module_t *module)
{
    if (module)
    {
        dlclose(module->handle);
        list_del(&module->entry);
        free(module);
    }
}